/*
 * Codifica um objeto como uma lista de propriedade="valor"
 */
function options_to_s(obj){
	var s = '';
	if(obj == null){
		return s;
	}
	
	for(var key in obj){
		s += ' ' + key + '="' + obj[key] + '"';
	}
	
	return s;
}

function code(tag, str, options){
	if(options == null){
		options = [];
	}
	return '<' + tag + '' + options_to_s(options) + '>\n' + str + '</' + tag + '>\n';
}

/*
 * str - Informacao contida na linha. Geralmente e o resultado de uma chamada 
 * para a funcao "td(str)" ou "tds(strArray, num)"
 */
function tr(str, options){
	return code('tr', str, options);
}

/*
 * str - Informa��o contida na coluna
 */
function td(str, options){
	return code('td', str, options);
}

/*
 * strArray - Array com os dados da linha
 * num - N�mero de colunas a ser criado
 */
function tds(strArray, options){
	var s = '';
	var num = strArray.length;
	for(var i=0; i<num; i++){
		s += td(strArray[i], options);
	}
	
	return s;
}

/*
 * strArray - Array de arrays com os dados das linhas
 * num - N�mero de linhas a ser construido
 */
function trs(strArray, tr_options, td_options){
	var s = '';
	var num = strArray.length;
	for(var i=0; i<num; i++){
		tr(tds(strArray[i], td_options), tr_options);
	}
}

/*
 * <a>
 */
function a(text, url, options){
	options['href'] = url;
	return code('a', text, options);
}

/*
 * <b>
 */
function bold(str, options){
	return code('b', str, options);
}

/*
 * <label>
 */
function label(str, options){
	return code('label', str, options);
}